<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
</html>
<script>
/* let与var的区别:
        var是函数作用域，let是块作用域
        var有变量提升，let不存在变量提升
        var 可以重复声明，let在同一作用域下不可以重复声明 */


/*const常量:
        1、 const常量一旦声明并赋值后不能改变。
        2、 const 常量声明赋值必须同时进行。
        3、const 常量声明为大写(约定俗成)
        4、 const 常量如果保存的是引用类型（复杂类型，指数组、对象），那么常量只能保证存储的地址不可改变，至于地址指向的内容是可以修改的。 */


    let str = "qwekjh";

// 查看字符串是否以参考字符开头
    // console.log(str.startsWith("qwe"));     //true
    // console.log(str.startsWith("q"));       //true
    // console.log(str.startsWith("a"));       //false

// 查看字符串是否以参考字符结尾
    // console.log(str.endsWith("kjh"));           //true
    // console.log(str.endsWith("h"));             //true
    // console.log(str.endsWith("j"));             //false


// 将字符串重复n次
    //console.log(str.repeat(3));

// 字符串头部补全(字符串不够自动重复，字符串多了自动截取)
    // console.log(str.padStart(10,"ab"));

// 字符串尾部补全(字符串不够自动重复，字符串多了自动截取)
    // console.log(str.padEnd(10,"ab"));


// 新增symbol数据类型（生成独一无二的值，不会与任何值重复）
//应用场景：当在多人协同开发模式时，如果对象是共有对象,可使用symbol类型解决无意中“覆盖”原有对象的属性或方法的问题。
    let s1 = Symbol("s1");
    let s2 = Symbol("s2");
    // console.log(s1 == s2);
    // console.log(typeof s1);
    // console.log(s1,s2);

//数组拓展 
    // of():创建数组
    // let arr = Array.of();
    // arr.push("1","2","你好，我是第三个元素")
    // console.log(arr);

    // from():把伪数组转换成数组（只会找键是数字的排序开始变数组，必须有长度）
    // let obj = {
    //     "0":"我是0",
    //     "1":"我是1",
    //     "2":"我是2",
    //     "3":"我是3",
    //     "length":4
    // }
    // console.log(Array.from(obj));

// 对象拓展
        let obj1 = {name : "wang"};
        let obj2 = {age : 12};
    // 新增方法
    let objPlus = Object.assign(obj1,obj2)
    // console.log(objPlus);       //合并对象
    // console.log(objPlus.keys(objPlus));      //将对象中的键返回数组
    // console.log(objPlius.values(objPlus));      //将对象中的键值返回数组


/* // set与map类型
    // set类型（类似数组，但是不能有重复的项）(里面需要放数组)
    var setArr = new Set([1,1,2,1,1,1,6,2]);
        // size：长度（不带括号）
        console.log(setArr.size);
        // add:增加一个数据
        setArr.add("我是新加的数据");
        // has:判断是否有指定的项
        console.log(setArr.has(5));
        //delete: 删除项
        setArr.delete(1);
        // clear:清除所有项
        setArr.clear()
    console.log(setArr); */

   /*  //map类型（类似对象，不过 键可以是任意类型）
    let mapObj = new Map();
    let obj = {a:1};
        //set:加元素
        mapObj.set(obj,1);
        //get:获取
        console.log(mapObj.get(obj));
        //has:判断有无某个元素
        console.log(mapObj.has(obj));
        //delete:删除
        mapObj.delete(obj);
    console.log(mapObj); */

    //解构赋值




    



</script>